iT邦幫忙

2024 iThome 鐵人賽

DAY 2
0

組合語言x86

組合語言分很多種,常見的有x86和ARM等,這邊介紹這次實作以及常用的指令,當然除了介紹的這些以外還會有很多沒有介紹到的,比如組合語言中的假指令,EQU、ORG等,還有許多的相關知識,但這邊還是以能夠快速上手為主,如果有興趣可以再深入研究。

MOV:目的,來源
LEA:目的,來源的地址
PUSH:放入Stack
POP:取出Stack
ADD:A,B 等於A=A+B
SUB:A,B 等於A=A-B
CMP:A,B A和B比較,實際上會進行A-B是否等於0來做比較
CALL:會進行轉跳前的處理,讓轉跳的目標執行完後能夠Return回來
JUMP:直接跳到目標
INC:加一
DEC:減一
這邊說明一下,有條件的Jump指令很多,這邊拿幾個說明,但與英文縮寫一樣,很好背。
JE:如果相同就轉跳(Jump if Equal)
JNE:如果不相同就轉跳(Jump if Not Equal)
JG:如果更大就轉跳(Jump if Greater)

EFLAGS

接下來是在做運算時也很重要的EFLAGS
CF:確認是否有進位(最高位是否有進位)
PF:奇偶數
AF:輔助進位(只看低四位的進位),如1000+1000 AF為1,0111+1000 AF為0
ZF:確認是否為零
SF:確認是否為負數
OF:確認是否溢出
除此之外還有DF、IF、TF、RF等等。

就算上面這些背不下來,在逆向的過程當中還是會有一些說明,可以放心服用接下來的文章。
除了以上這些,還有很多Reverse或Pwn的細節,包含區段暫存器或在Linux底下的/proc等等,很多在做Pwn或Reverse需要注意的細節,但這邊是從0開始從Reverse到會簡單的Pwn,屬於面向新手的教學,有興趣的可以自行研究。


上一篇
從0開始的基礎
下一篇
GDB常用指令
系列文
從0開始的打Pwn教學14
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言